<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<h1>数组新增</h1>
		<p>ES3：sort</p>
		<p>ES5：高阶，forEach filter map reduce some every</p>
		<p>ES6:find查找符合条件的元素，findIndex查找符合条件元素的下标</p>
		<script>
		var arr=[2,4,6,7,8];
		// find查找符合条件的元素
		// var el = arr.find(function(item){
		// 	if(item>5){return true}
		// })
		// var  el = arr.find(item=>item>5);
		// console.log(el);
		// findIndex 查找符合条件元素的下标
		// var index = arr.findIndex(function(item){
		// 	return item>5;
		// })
		// alert(index);
		
		// forEach 遍历元素
		var arr1 = ["小红","小绿","小蓝","小紫",'小黑'];
		// item当前遍历的元素，index当前元素的下标，self当前遍历的数组
		arr1.forEach(function(item,index,self){
			// console.log(item,index,self)
		})
		
		// filter 过滤不符合条件的元素（返回true保留，返回false过滤掉）
		var arr2 = arr.filter(function(item){
			return item%2===0;
		})
		// console.log("arr2",arr2)
		// filter通常可以实现数组的去重
		var arr3 = [1,1,2,2];
		// 1 item  0  0 true 保留
		// 1 item  0  1 false 过滤
		// 2 item  2  2 true 保留
		// 2 item  2  3 false 过滤
		
		var arr4 = arr3.filter(function(item,index){
			// 获取元素查找出来的下标
			var ind = arr3.indexOf(item);
			if(ind===index){
				// 如果查找出的下标与遍历下标一致，元素保留
				return true
			}else{
				return false;
			}
		})
		console.log("arr4",arr4)
		
		// map 映射，一一对应的方式产生一个新的数组
		var arr=[2,4,6,7,8];
		var arr5 = arr.map(function(item){
			return {num:item*2}
		})
		console.log("arr5",arr5)
		
		// reduce 类型，上次的结果是当次的条件
		// 数组的求和
		var total = arr.reduce(function(a,b){
			return a+b;
		})
		// a:2  b:4  return 6
		// a:6  b:6  return 12
		// a:12 b:7	 return 19
		// a:19 b:8	 return 27
		console.log(total);
		var big = arr.reduce(function(a,b){
			return a*10+b;
		})
		console.log("big",big);
		
		// some 有一返回真，着整体为真
		var arr6 = [5,1,2,12,3,7];
		// 判断arr6里面是否有一个大于10的数
		var isbig = arr6.some(function(item){
			return item>10;
		})
		console.log("isbig",isbig);
		// every所有的回调函数返回为真，才返回真
		// 查找所有的数是否都大于5
		var bigF = arr6.every(function(item){
			return item>5;
		})
		console.log("bigF",bigF)
		
		//
		</script>
	</body>
</html>
